package com.java8.Lambda;

import org.junit.Test;

import java.util.function.Consumer;

public class demo04_注意 {
    //对应接口
    @FunctionalInterface
    interface MyMath {
        int operate(int a, int b);
    }
    @Test
    public void test(){
        // 注意1：指定参数类型 int时
        MyMath add = (int a, int b) -> a + b;
        System.out.println(add.operate(5, 3)); // 输出 8
        //注意2：代码多于一行，必须用花括号 `{}` 和 `return`
        MyMath max = (a, b) -> {
            System.out.println("比较两个数大小");
            return a > b ? a : b;
        };
        System.out.println(max.operate(5, 8)); // 输出 8
        //注意3：根据上下文推断参数类型（省略类型）
        MyMath sub = (a, b) -> a - b;
        System.out.println(sub.operate(10, 4)); // 输出 6
        //注意4：参数只有一个，可以省略小括号 `()`
        Consumer<String> printer = s -> System.out.println(s.toUpperCase());
        printer.accept("hello"); // 输出：HELLO
    }

}
